home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Lengths / Modify / l-alignment < prev    next >
Lisp/Scheme  |  1998-08-11  |  1KB  |  31 lines

  1. l-alignment position type lengths
  2.  
  3. This function enables a group of instruments with note-length lists of non-concurrent values to syncronize within and to a single zone-length. In effect, the function length-insert has been applied across a multipart texture. 
  4.  
  5. When the function processes a collection of note-length lists it uses the make-zone function to add-up each list into a zone-length. It picks the longest zone-length and uses this as a master. With this master value the remaining lists have note-lenth values added to them to 'add-up' to the master zone. 
  6.  
  7. The type parameter gives the option for this 'add-up' value to be a :rest or :note. The position parameter allows for the new value to be placed at :first or :last in the list. 
  8.  
  9. type :rest :note seed
  10. position :first :last :rand seed 
  11.  
  12. (setq v1 '(1/1 1/20 7/30 -13/60 1/20))
  13. (setq v2 '(3/8 1/2 -5/24))
  14. (setq va '(3/40 3/40 -19/40 5/24 13/60))
  15. (setq vc '(1/12 1/12 1/6 7/48 7/48 7/24 -23/60))
  16.  
  17. (setq sq (l-alignment :last :rest v1 v2 va vc))
  18.  
  19. => ((1/1 1/20 7/30 -13/60 1/20)
  20.     (3/8 1/2 -5/24 -7/15)
  21.     (3/40 3/40 -19/40 5/24 13/60 -1/2)
  22.     (1/12 1/12 1/6 7/48 7/48 7/24 -23/60 -1/4))
  23.  
  24. The output produces a align list of length lists which must then be extracted using car or its MRAC option 1~, 2~ etc. 
  25.  
  26. (setq
  27.  violin1 (1~ sq)
  28.  violin2 (2~ sq)
  29.  viola (3~ sq)
  30.  cello (4~ sq))
  31.